﻿using System.Windows;
using ExamSharedClasses;
using System.Windows.Controls;
using ExamSharedClasses.Commands;

namespace ExamClient {
    /// <summary>
    /// (k) Dieses Fenster enthält Möglichkeiten, sein altes Passwort einmal, 
    /// und sein gewünschtes Passwort doppelt einzugeben, damit es geändert werden
    /// kann. Bei Drücken von "Ändern" wird bei entsprechend richtigen Eingaben
    /// eine Änderungsanfragen an den Server verschickt. 
    /// </summary>
    public partial class PasswordPage : Page {
        public PasswordPage() {
            InitializeComponent();
            oldPasswordTextbox.Focus();
        }

        private void changeButton_Click( object sender, RoutedEventArgs e ) {
            string message = "";
            try {
                if (!Tools.GenerateSHA1Hash(oldPasswordTextbox.Password).Equals(App.Password.PasswordHash)) {
                    message += "Das alte Passwort stimmt nicht!\n";
                }

                if (!newPasswordTextbox1.Password.Equals(newPasswordTextbox2.Password)) {
                    message += "Die beiden Eingaben des neuen Passworts \nstimmen nicht überein!\n";
                }

                if (oldPasswordTextbox.Password.Equals("") | newPasswordTextbox1.Password.Equals("") | newPasswordTextbox2.Password.Equals("")) {
                    message = "Es darf kein Feld leer bleiben!\n";
                }

                if (!message.Equals("")) {
                    App.MainWindow.SetStatusBarMessage(message);
                } else {
                    App.Password.PasswordHash = Tools.GenerateSHA1Hash(newPasswordTextbox1.Password);
                    App.ServerConnection.Send( new ChangePassword( new Password( App.UserAddress.UserId, App.Password.PasswordHash ) ) );
                }
                App.MainWindow.center.Content = App.MainPage;

            } catch {
                App.MainWindow.SetStatusBarMessage("Fehler beim Passwort ändern...");
            }
        }
        private void cancelButton_Click( object sender, RoutedEventArgs e ) {
            App.MainWindow.center.Content = App.MainPage;
        }
    }
}
